package com.expert.miniapp.dto;

import lombok.Data;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Size;
import java.io.Serializable;

/**
 * 科研专家DTO类
 * 对应数据库表：research_expert
 */
@Data
public class ResearchExpertDTO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    /**
     * 专家唯一标识（主键）
     */
    @NotBlank(message = "专家ID不能为空")
    @Size(max = 20, message = "专家ID长度不能超过20个字符")
    private String expertId;
    
    /**
     * 头像URL
     */
    @Size(max = 500, message = "头像URL长度不能超过500个字符")
    private String avatarUrl;
    
    /**
     * 昵称
     */
    @Size(max = 100, message = "昵称长度不能超过100个字符")
    private String nickname;
    
    /**
     * 真实姓名
     */
    @Size(max = 100, message = "真实姓名长度不能超过100个字符")
    private String realName;
    
    /**
     * 所属机构
     */
    @Size(max = 60, message = "所属机构长度不能超过60个字符")
    private String organization;
    
    /**
     * 研究方向
     */
    @Size(max = 200, message = "研究方向长度不能超过200个字符")
    private String researchDirections;
    
    /**
     * 擅长行业
     */
    @Size(max = 200, message = "擅长行业长度不能超过200个字符")
    private String skilledIndustries;
    
    /**
     * 详细介绍
     */
    private String detailedIntro;
    
    /**
     * 分类标签
     */
    @Size(max = 50, message = "分类标签长度不能超过50个字符")
    private String categories;
    
    /**
     * 标签
     */
    @Size(max = 50, message = "标签长度不能超过50个字符")
    private String tags;
    
    /**
     * 所在城市
     */
    @Size(max = 30, message = "所在城市长度不能超过30个字符")
    private String city;
    
    /**
     * 显示权重
     */
    private Integer displayWeight;
}